#include <iostream>
using namespace std;

// 对象初始化和清理

class Person
{
public:
    // 1、构造函数   进行初始化操作
    // 没有返回值  不用写void
    // 函数名  与类名相同
    // 构造函数可以有参数，可以发生重载
    // 创建对象的时候，构造函数会自动调用，而且只调用一次
    Person()
    {
        cout << "Person的构造函数调用" << endl;
    }

    // 2、析构函数   进行清理操作
    // 没有返回值  不写void
    // 函数名和类名相同 在名称前面加～
    // 析构函数不可以有参数，不可以发生重载
    // 对象销毁前  会自动调用析构函数，而且只调用一次
    ~Person()
    {
        cout << "Person的析构函数调用" << endl;
    }
};

// 构造函数和析构函数都必须有，如果我们自己不提供，编译器会自动提供空参构造和拷贝构造
void test1()
{
    Person p; // 创造对象时，构造函数自动调用
              // 在栈上的数据，test1执行完毕后，会释放这个对象
    Person p1(p);
}

int main()
{
    test1();

    cout << "=======================" << endl;
    Person p[3]; // 对象数组也会调用 构造方法

    return 0;
}